package eu.floranet.arquivo.temp;

import java.util.List;

import javax.persistence.Query;

import org.junit.Test;

import eu.floranet.repositorio.sql.EntidadeArciprestados;
import eu.floranet.repositorio.sql.RelationObjectoPermissao;
import eu.floranet.repositorio.sql.RelationProcessoArciprestado;

public class Example01 extends EclipseLink {

	@SuppressWarnings("unchecked")
	public void readAllEntidadeArciprestados() {
		try {
			initEntityManager();
			em.getTransaction().begin();

			String querySql = "SELECT ea FROM EntidadeArciprestados ea";
			Query query = em.createQuery(querySql);

			List<EntidadeArciprestados> lea = query.getResultList();

			for (EntidadeArciprestados ea : lea) {
				System.out.println(ea.getArciprestadoNome());
			}

			cleanUpClosedEMF();
		} catch (EclipseLinkException e) {
			// TODO Erase
			e.printStackTrace();
		}
		
	}

	@SuppressWarnings("unchecked")
	public void readRelationProcessoArciprestados() {
		try {
			initEntityManager();
			em.getTransaction().begin();

			String q = "SELECT DISTINCT rpa FROM RelationProcessoArciprestado rpa " +
					"JOIN FETCH rpa.paProcesso JOIN FETCH rpa.paArciprestado";
			Query query = em.createQuery(q);

			List<RelationProcessoArciprestado> lea = query.getResultList();
			
			for (RelationProcessoArciprestado ea : lea) {
				System.out.println(ea.getPaArciprestado().getArciprestadoNome());
				System.out.println(ea.getPaProcesso().getProcessoCota());
			}

			cleanUpClosedEMF();
		} catch (EclipseLinkException e) {
			// TODO Erase
			e.printStackTrace();
		}
		
	}
	
	@SuppressWarnings("unchecked")
	@Test
	public void readRelationObjectoPermissao(){
		try {
			initEntityManager();
			em.getTransaction().begin();
			
			String q = "SELECT DISTINCT rop FROM RelationObjectoPermissao rop " +
					"WHERE rop.opGrupo IN (:GRUPO)";
			
			Query query = em.createQuery(q).setParameter("GRUPO", 1);
			
			List<RelationObjectoPermissao> lop = query.getResultList();
			
			for(RelationObjectoPermissao op : lop){
				System.out.println(op.getOpObjecto().getObjectoClass());
			}
			
			cleanUpClosedEMF();
		} catch (EclipseLinkException e) {
			// TODO Erase
			e.printStackTrace();
		}
	}
}
